home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / X11R4 / cmds / X / X.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-01-09  |  1.3 KB  |  65 lines

  1. #include "sprite.h"
  2. #include "sys/file.h"
  3. #include "errno.h"
  4. #include "stdio.h"
  5. #include "dev/graphics.h"
  6. #include "sys/ioctl.h"
  7.  
  8. char    colorServer[] = "/X11/R4/cmds/Xcfbpmax";
  9. char    bwServer[] = "/X11/R4/cmds/Xmfbpmax";
  10.  
  11. main(argc, argv)
  12.     int        argc;
  13.     char    *argv[];
  14. {
  15.     int        fdPM;
  16.     int        isColor;
  17.     char    **newargv;
  18.     int        i;
  19.  
  20.     /*
  21.      * Determine the server type.
  22.      */
  23.     if ((fdPM = open("/dev/mouse", O_RDWR | O_NDELAY, 0)) < 0) {
  24.     fprintf(stderr, "couldn't open /dev/mouse \n");
  25.     return FALSE;
  26.     }
  27.     if (ioctl(fdPM, QIOISCOLOR, &isColor) < 0) {
  28.     extern int errno;
  29.     int en = errno;
  30.  
  31.     fprintf(stderr, "errno = %d, ", en);
  32.     fprintf(stderr, "error doing ioctl\n");
  33.     close(fdPM);
  34.     return FALSE;
  35.     }
  36.     close(fdPM);
  37.  
  38.     /*
  39.      * Copy the arguments.
  40.      */
  41.     newargv = (char **) malloc((argc + 1) * sizeof (char *));
  42.     if (isColor) {
  43.     newargv[0] = (char *) malloc(strlen(colorServer) + 1);
  44.     strcpy(newargv[0], colorServer);
  45.     } else {
  46.     newargv[0] = (char *) malloc(strlen(bwServer) + 1);
  47.     strcpy(newargv[0], bwServer);
  48.     }
  49.  
  50.     for (i = 1; i < argc ; i++) {
  51.     newargv[i] = (char *) malloc(strlen(argv[i]) + 1);
  52.     strcpy(newargv[i], argv[i]);
  53.     }
  54.     newargv[i] = NULL;
  55.  
  56.     /*
  57.      * Exec the server.
  58.      */
  59.     execvp(newargv[0], newargv);
  60.  
  61.     fprintf(stderr, "Unable to exec %s\n", newargv[0]);
  62.  
  63.     exit(1);
  64. }
  65.